package elib;

import java.sql.*;
import java.util.List;
import java.util.ArrayList;

public class Kierownik extends Osoba{
	public Kierownik(String imie, String nazwisko, String login, String haslo, long pesel, int prawaDostepu) {
		super.imie = imie;
		super.nazwisko = nazwisko;
		super.login = login;
		super.haslo = haslo;
		super.pesel = pesel;
		super.prawaDostepu = prawaDostepu;
	}
	
	public int dodajKsiazke(String tytul, String autor, String dataWydania, int iloscStron, String ISBN, String fragment) {
		int id=-1;
		try {
			//laczenie z baza danych
			Class.forName("com.mysql.jdbc.Driver");
			//Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sql323890", "root", "");
			Connection con = DriverManager.getConnection("jdbc:mysql://glass.elk.pl:3306/sql323890","mpigora","TTn9sez8cSXM6CNx");
			Statement stmt = con.createStatement();
			//otrzymywanie maksymalnego id+1
			String queryId = "SELECT MAX(idKsiazki)+1 as id FROM Ksiazka";
			ResultSet rs = stmt.executeQuery(queryId);
			rs.next();
			id = rs.getInt("id");
			//wykonanie dodania klienta
			String queryAdd = "INSERT INTO Ksiazka VALUES("+id+", '"
					+tytul+"', '"+autor+"', '"+dataWydania+"', "+iloscStron+", '"+ISBN+"', 0,'"+fragment+"');";
			stmt.executeUpdate(queryAdd);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return id;
	}
	
	public void dodajKlienta(String imie, String nazwisko, String pesel, String login, String haslo) {
		try {
			//laczenie z baza danych
			Class.forName("com.mysql.jdbc.Driver");
			//Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sql323890", "root", "");
			Connection con = DriverManager.getConnection("jdbc:mysql://glass.elk.pl:3306/sql323890","mpigora","TTn9sez8cSXM6CNx");
			Statement stmt = con.createStatement();
			//otrzymywanie maksymalnego id+1
			String queryId = "SELECT MAX(idKlienta)+1 as id FROM Klient";
			ResultSet rs = stmt.executeQuery(queryId);
			rs.next();
			String id = rs.getString("id");
			//wykonanie dodania klienta
			String queryAdd = "INSERT INTO Klient VALUES("+id+", '"
					+imie+"', '"+nazwisko+"', "+pesel+", '"+login+"', '"+haslo+"', 3);";
			stmt.executeUpdate(queryAdd);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public void dodajPracownika(String imie, String nazwisko, String pesel, String login, String haslo) {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			//Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sql323890", "root", "");
			Connection con = DriverManager.getConnection("jdbc:mysql://glass.elk.pl:3306/sql323890","mpigora","TTn9sez8cSXM6CNx");
			Statement stmt = con.createStatement();
			//otrzymywanie maksymalnego id+1
			String queryId = "SELECT MAX(idPracownika)+1 as id FROM Pracownik";
			ResultSet rs = stmt.executeQuery(queryId);
			rs.next();
			String id = rs.getString("id");
			//wykonanie dodania
			String queryAdd = "INSERT INTO Pracownik VALUES("+id+", '"
					+imie+"', '"+nazwisko+"', "+pesel+", '"+login+"', '"+haslo+"', 2);";
			stmt.executeUpdate(queryAdd);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public void usunKsiazke(int id) {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			//Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sql323890", "root", "");
			Connection con = DriverManager.getConnection("jdbc:mysql://glass.elk.pl:3306/sql323890","mpigora","TTn9sez8cSXM6CNx");
			Statement stmt = con.createStatement();
			//wykonanie usuniecia ksiazki
			String queryDel = "DELETE FROM Ksiazka WHERE idKsiazki="+id;
			stmt.executeUpdate(queryDel);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public void usunKlienta(int id) {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			//Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sql323890", "root", "");
			Connection con = DriverManager.getConnection("jdbc:mysql://glass.elk.pl:3306/sql323890","mpigora","TTn9sez8cSXM6CNx");
			Statement stmt = con.createStatement();
			//wykonanie usuniecia klienta
			String queryDel = "DELETE FROM Klient WHERE idKlienta="+id;
			stmt.executeUpdate(queryDel);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public void usunPracownika(int id) {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			//Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sql323890", "root", "");
			Connection con = DriverManager.getConnection("jdbc:mysql://glass.elk.pl:3306/sql323890","mpigora","TTn9sez8cSXM6CNx");
			Statement stmt = con.createStatement();
			//wykonanie usuniecia pracownika
			String queryDel = "DELETE FROM Pracownik WHERE idPracownika="+id;
			stmt.executeUpdate(queryDel);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public List<Klient> wypiszKlientow(String nazwa) {
		List<Klient> listaKlientow = new ArrayList<Klient>();
		String queryKlienci = "SELECT * FROM Klient ";
		if(nazwa!=null && !nazwa.equals("")) {
			queryKlienci += "WHERE imie LIKE '%"+nazwa+"%' OR nazwisko LIKE '%"+nazwa+"%' OR login LIKE '%"+nazwa+"%'";
		}
		try {
			Class.forName("com.mysql.jdbc.Driver");
			//Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sql323890", "root", "");
			Connection con = DriverManager.getConnection("jdbc:mysql://glass.elk.pl:3306/sql323890","mpigora","TTn9sez8cSXM6CNx");
			Statement stmt = con.createStatement();
	    	//pobieranie danych klientow
		    ResultSet rs = stmt.executeQuery(queryKlienci);
		    while (rs.next()) {
		    	listaKlientow.add(new Klient(
		    				Integer.parseInt(rs.getString("idKlienta")),
		    				rs.getString("imie"),
		    				rs.getString("nazwisko"),
		    				rs.getString("login"),
		    				rs.getString("haslo"),
		    				Long.parseLong(rs.getString("pesel")),
		    				Integer.parseInt(rs.getString("prawaDostepu"))
		    			));
		    }
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
		return listaKlientow;
	}
	
	public List<Bibliotekarz> wypiszPracownikow() {
		List<Bibliotekarz> listaPracownikow = new ArrayList<Bibliotekarz>();
		String queryPracownik = "SELECT * FROM Pracownik WHERE prawaDostepu=2";
		try {
			Class.forName("com.mysql.jdbc.Driver");
			//Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sql323890", "root", "");
			Connection con = DriverManager.getConnection("jdbc:mysql://glass.elk.pl:3306/sql323890","mpigora","TTn9sez8cSXM6CNx");
			Statement stmt = con.createStatement();
	    	//pobieranie danych bibliotekarzy
		    ResultSet rs = stmt.executeQuery(queryPracownik);
		    while (rs.next()) {
		    	listaPracownikow.add(new Bibliotekarz(
		    				Integer.parseInt(rs.getString("idPracownika")),
		    				rs.getString("imie"),
		    				rs.getString("nazwisko"),
		    				rs.getString("login"),
		    				rs.getString("haslo"),
		    				Long.parseLong(rs.getString("pesel")),
		    				Integer.parseInt(rs.getString("prawaDostepu"))
		    			));
		    }
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
		return listaPracownikow;
	}
	
	public void ustawieniaKar(float stawka, int okres) {
		try {
			Class.forName("com.mysql.jdbc.Driver");
			//Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/sql323890", "root", "");
			Connection con = DriverManager.getConnection("jdbc:mysql://glass.elk.pl:3306/sql323890","mpigora","TTn9sez8cSXM6CNx");
			Statement stmt = con.createStatement();
			//wykonanie usuniecia pracownika
			String queryUp = "UPDATE Kara";
			if(stawka!=-1)
				queryUp += " SET stawka="+stawka;
			if(okres!=-1 && stawka!=-1)
				queryUp += ", okres="+okres;
			else if(okres!=-1)
				queryUp += " SET okres="+okres;
			stmt.executeUpdate(queryUp);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}